今天要來介紹甚麼是對話中的 Dialog。
Dialog 實際給 user 的使用感覺就像 chatbot 在執行某一個功能而外產生的小框框,進入小框框後,user 會被引導回答一系列的問題,但這些問題都是跟某一個主題有關。
舉例,如果我向一個智能機器人傳送出「我要預訂車票」的指令,則 user 理當需要回覆以下的問題:
Dialog 應用場景就是在日常生活需要填寫一連串資料、回覆一系列問題,這類問題如果要單純用 Bot Framework 實作,就需要導入 Dialog 這種而外的小框框概念,使用者回覆完小框框的問題,才可以回到最一開始的 bot.py 內的 on_message_activity()內的邏輯
。
Bonus: 如果可以導入 Bot Framework 以外的技術,LUIS 會是一個不錯的解決方案。
但是如果此機器人不只有預訂車票的功能,還具有「叫外賣」的功能,那就更適合使用 Dialog。叫外賣也會需要顧客提供以下的資料:
如果我們要實作具有「預訂車票」、「叫外賣」兩種功能的智慧機器人,那使用 Dialog 在原先的對話中開一個小框框(感覺上的),最適合不過。當 chatbot 判斷出 user 要「叫外賣」,就開啟「叫外賣」小框框,當使用者回答完小框框一系列的問題後,再跳出小框框,等候下一個指令(預訂車票、叫外賣等其他指令)。
而且「預訂車票」、「叫外賣」這兩種功能,都是需要向 user 索取固定的資訊,針對不同顧客幾乎都是問相同一系列的問題,所以使用 Dialog 而外開一個小框框完全滿足當前的使用場景。
小總結
1. Dialog 是一種而外開啟小框框的概念
2. 小框框的問句都是引導使用者回覆一系列完成某一個指令需要的資訊
3. 若想要實作多功能的智慧機器人,使用 Dialog 會是一個不錯的解決方案
這是一個簡單詢問使用者資訊的 Dialog。
詳細的 code 請參考: https://github.com/microsoft/BotBuilder-Samples/tree/main/samples/python/05.multi-turn-prompt
這是一個比較複雜的階層 Dialog。
詳細 code 請參考: https://github.com/microsoft/BotBuilder-Samples/tree/main/samples/python/43.complex-dialog
Dialog 基本上可以分成三種:
以上是今天想要分享的內容,Dialog 算是使用 Bot Framework 建立智障機器人與智慧機器人得分水嶺,我當時自學這邊也看了一段時間,才搞懂這邊的邏輯,大家如果有問題可以多多討論。